package com.supermarket.manage.common.dto.stock.response;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author Faxon
 * @version 1.0
 * @date 2020-03-15 23:09
 **/
@Data
@ApiModel("InstockDto:入库单详情 信息对象")
public class InstockDto implements Serializable {

    private static final long serialVersionUID = -72419273314245791L;
    /**
     * 入库单id
     */
    @ApiModelProperty(value = "入库单id")
    @TableId(type = IdType.INPUT)
    @NotBlank(message = "入库单id不能为空")
    private String id;

    /**
     * 供应商id
     */
    @ApiModelProperty(value = "供应商id(销售退货入库该值为0000)")
    @NotBlank(message = "供应商id不能为空(销售退货入库该值为0000)")
    private String sid;

    /**
     * 经办人id
     */
    @ApiModelProperty(value = "经办人id,即当前用户id")
    @NotNull(message = "经办人id不能为空")
    private Long operator;

    /**
     * 应付金额
     */
    @ApiModelProperty(value = "应付金额")
    @NotNull(message = "应付金额不能为空")
    private BigDecimal totalPrice;

    /**
     * 实付金额
     */
    @ApiModelProperty(value = "实付金额")
    @NotNull(message = "实付金额不能为空")
    private BigDecimal actuallyPrice;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 单据类型（0：采购入库，1：销售退货入库）
     */
    @ApiModelProperty(value = "单据类型（0：采购入库，1：销售退货入库）")
    private Integer type;

    /**
     * 单据状态(0：未完成，1：已完成，)
     */
    @ApiModelProperty(value = "单据状态(0：未完成，1：已完成)")
    private Integer status;

    /**
     * 客户id
     */
    @ApiModelProperty(value = "客户id")
    @NotBlank(message = "客户id不能为空")
    private String buyerId;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date created;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updated;

    //------------

    /**
     * 经办人名称
     */
    @ApiModelProperty(value = "经办人名称")
    private String operatorName;

    /**
     * 供应商名称
     */
    @ApiModelProperty(value = "供应商名称")
    private String sname;

    /**
     * 商品集合
     */
    @ApiModelProperty(value = "商品集合")
    List<InProdDto> instockProds;
}
